package com.weishuang.monitor.leader.commons.utils;

import com.github.pagehelper.Page;
import com.weishuang.monitor.leader.commons.entity.PageVO;
import com.weishuang.monitor.leader.commons.entity.Result;
import com.weishuang.monitor.leader.commons.enums.ECODE;
import com.weishuang.monitor.leader.commons.enums.ICODE;
import com.weishuang.monitor.leader.commons.enums.RCODE;

/**
 * @Description: 返回工具类
 * @Author 62548
 * @Date 2018/8/3121:35
 */
public class ResultUtils {

    /**
     * 返回成功对象 无数据返回 code=200
     *
     * @return
     */
    public static Result success() {
        return new Result(RCODE.SUCCESS);
    }

    /**
     * 返回成功对象 code=200
     *
     * @param data 所需返回对象
     * @return
     */
    public static <T> Result<T> success(T data) {
        Result result = new Result(RCODE.SUCCESS);
        if (data instanceof Page) {
            PageVO<T> pageVO = PageVO.of((Page<T>)data);
            result.setData(pageVO);
        } else {
            result.setData(data);
        }
        return result;
    }

    /**
     * 重写success返回窗口
     * @param code 成功信息
     * @return
     */
    public static Result success(RCODE code) {
        Result result = new Result(code);
        return result;
    }

    /**
     * 重写success返回窗口
     * @param code 成功信息
     * @param data 成功数据
     * @return
     */
    public static <T> Result<T> success(RCODE code,T data) {
        Result result = new Result(code);
        if (data instanceof Page) {
            PageVO<T> pageVO = PageVO.of((Page<T>)data);
            result.setData(pageVO);
        } else {
            result.setData(data);
        }
        return result;
    }

    /**
     * 警告返回方法
     * @return
     */
    public static Result info() {
        return new Result(ICODE.INFO_SERVER);
    }

    /**
     * 警告返回方法
     * @return
     */
    public static Result info(String msg) {
        return new Result(ICODE.INFO_SERVER.getCode(),msg);
    }

    /**
     * 警告返回方法
     * @return
     */
    public static Result info(ICODE icode) {
        return new Result(icode);
    }


    /**
     * 异常返回方法
     * @return
     */
    public static Result error() {
        return new Result(ECODE.ERROR_SERVER);
    }

    /**
     * 异常返回方法
     * @return
     */
    public static Result error(String msg) {
        return new Result(ECODE.ERROR_SERVER.getCode(), msg);
    }

    /**
     * 异常返回方法
     * @param ecode
     * @return
     */
    public static Result error(ECODE ecode) {
        return new Result(ecode);
    }



    /**
     * 直接通过参数返回
     * @return
     */
    public static Result auto(Integer code,String msg) {
        return new Result(code, msg);
    }

}
